package stream;


import java.util.Arrays;
import java.util.List;

/**
 * 所有数据归纳到一个数据
 */
public class StreamReduce {
    public static void main(String[] args) {
        sum();
        max();
    }

    private static void max() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4);
        Integer max = list.stream().reduce(0, (x, y) -> x > y ? x : y);
        System.out.println("max = " + max);
    }

    private static void sum() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4);
        /**
         * T reduce(T identity, BinaryOperator<T> accumulator); identity:默认值 accumulator:对数据处理的方式
         * 执行过程：
         * 1.将默认的值赋给x，取集合中的第1个元素赋给y，执行x+y
         * 2.将处理的结果赋给x，取集合中的第2个元素赋给y，执行x+y
         * 3.将处理的结果赋给x，取集合中的第3个元素赋给y，执行x+y
         * 4. ...
         */
        Integer sum = list.stream().reduce(0, (x, y) -> x + y);
        System.out.println("sum = " + sum);
    }
}
